在鐵人賽「Build on Google AI Track」的倒數第二篇,我們將進行一次深入的幕後揭密。要在短短 30 天內,從無到有打造出一套包含 FullCalendar v6 互動前端、Google Apps Script (GAS) 後端、Telegram Bot 即時推播 與 自動化自我修復機制 的產品級 NGO 房間預約系統,單靠個人在有限時間內是極大的挑戰。
這次的開發之所以能夠高效達標,核心在於採用了 AI 協同開發範式(AI-Assisted Development)。今天我們將詳細拆解本專案的 Prompt 工程技巧、規格驅動開發(Spec-Driven Development) 流程,以及 Gemini 如何在各個模組中扮演最強的技術協作者。
在與 AI 協同開發大型應用時,最怕遇到「片段、不連貫且前後矛盾」的程式碼。為了避免這種狀況,本專案建立了一套嚴謹的 四階段協同工作流:
[ 1. 專案邊界與架構錨定 ] ──► [ 2. 模組化規格定義 (SRD) ] ──► [ 3. 程式碼生成與整合 ] ──► [ 4. 例外處理與自我修復 ]
BookingService.gs 或 CancellationService.gs)時,強制要求所有參數必須從 Config.gs 讀取,拒絕寫死任何房間名稱、費用或時間限制。以下展示 Gemini 在本專案中發揮關鍵作用的三個最具代表性的實戰場景:
「我們正在為 NGO 開發房間預約系統。請設計一個軟編碼的
Config.gs結構,包含 5 個指定房間(活動室 A1/A2、B1/B2、洽談室)、每日 08:00-22:00 營運時間、30 分鐘為單位的時段切割,並定義對應的 Google Sheets 工作表 (Bookings,SystemLogs) Schema 欄位。」
Bookings 表格所需的 10 個標準欄位(包含 BookingID, UserEmail, RoomID, StartTime, EndTime, Status, CheckInTime 等),為後續的 QR Code 簽到與狀態追蹤鋪平了道路。「請撰寫前端
Index.html,使用 FullCalendar v6 結合 Tailwind CSS。頁面頂部需提供房間切換下拉選單。當使用者點選行事曆空白時段時,透過google.script.run非同步調用後端getAvailableSlots,並跳出 Modal 讓使用者填寫 Email 與用途。請確保程式碼具備防呆機制,避免職工重複登記已佔用的時段。」
CancellationService.gs)「請撰寫 24 小時取消規章的後端邏輯。當職工申請取消時,需比對目前時間與預約開始時間:若大於等於 24 小時,狀態更新為
CANCELLED(免罰則);若小於 24 小時,狀態更新為LATE_CANCELLED(記錄晚取消違規)。最後呼叫TelegramBotService.gs發送 HTML 格式的異動通知,並全程包裝在 Try-Catch 中。」
Utilities.formatDate 與精確的時間戳差值運算,產出了邏輯嚴密且具備防禦性(Defensive Programming)的取消服務程式碼。在歷時 30 天的協同開發中,也歸納出幾項與 Gemini 共同開發 GAS (Google Apps Script) 專案時的寶貴經驗:
UrlFetchApp, SpreadsheetApp, ScriptApp)」,以減少語法幻覺。今天我們進行了 AI 協同開發實戰:我如何用 Gemini 完成這套系統的 30 天速成,回顧了 Prompt 工程與規格驅動開發的實際威力。
明天結局篇,不容錯過!